/**
 * 
 */
package co.edu.javeriana.ia.ga;
import java.io.Serializable;
import java.util.Map;

/**
 * <p>
 * Gen que representa una parte de una regla
 * </p>
 * 
 * @author <a href=f.triana@javeriana.edu.co">Alejandro Triana</a>
 * @version 1.0
 */
public class RuleAllele implements Serializable {
	/**
	 * <p>
	 * Representa la condicion de la Regla
	 * </p>
	 */
	private static final long serialVersionUID = 1L;
	private Map<String, Descriptor> condition;
	private Genome action;
	
	
	/**
	 * <p>
	 * Establece la condicion de la Regla
	 * </p>
	 */
	public void setCondition(Map<String, Descriptor> condition) {
		this.condition = condition;
	}
	
	public Map<String, Descriptor> getCondition() {
		return condition;
	}
	
	/**
	 * <p>
	 * Obtiene la accion de la Regla
	 * </p>
	 */
	public Genome getAction() {
		return action;
	}
	
	/**
	 * <p>
	 * Establece la accion de la Regla
	 * </p>
	 */
	public void setAction(Genome action) {
		this.action = action;
	}
	
	/**
	 * <p>
	 * Determina si dos reglas son iguales. Dos reglas son iguales si
	 * this.condition.equals(obj.condition) && this.action.equals(obj.condition)
	 * </p>
	 */
	@Override
	public boolean equals(Object obj) {
		
		if(!(obj instanceof RuleAllele)) {
			return false;
		} else {
			RuleAllele objRuleAllele = (RuleAllele) obj;
			return this.condition.equals(objRuleAllele.getCondition()) && this.action.equals(objRuleAllele.getAction());
		}
	}
}
